**Final Project Report: Rendering Iridescent Spider Webs**
(#) Nevindu M. Batagoda (F007ZBF))
(##) Motivational image
- Curve geometry for modeling spider silk threads
I model the spider web geometry as a collection of cubic bezier curves, as such I implemented a curve intersection program in Darts
- Spectral rendering
To accurately simulate wave optical effects of spider silk, I implemented spectral rendering in Darts. This allows for wavelength-dependent light interactions necessary for capturing the iridescent colors of spider silk.
- Wave Optics based Hair/Fiber Scattering Model [Xia et al. 2020]
I implemented the fiber BSDF model from "A WaveOptics Based Fiber Scattering Model" by Xia et al. 2020. This paper combines the Marschner hair model with a wave optics based model obtained using Electromagnetic simulations (EM) to accurately capture the scattering behavior of thin fibers
(##) Importing curve geometry into Darts
- I modeled the spider web geometry in blender using cubic bezier curves. I then exported the geometry into a format similar to PBRT's curve format. Each curve is represented as a series of control points along with widths at each end point.
- The geometry is generated by offsetting the central Bézier curve by half the width in directions orthogonal to the curve.
- Because Bézier curves lie within the convex hull of their control points, you can bound the curve segment by the bounding box of its control points.
- For intersection testing with a ray, I transform the curve control points into a coordinate space where the curve is aligned along +z and the origin is at the ray origin. This is for simplifying the intersection calculations.
- I then use a recursive subdivision approach to find intersections. The curve is recursively subdivided until the curve is "flat". If the ray intersects the bounding box, I check for intersection with the flattened curve segment (approximated as a line segment) and compute the intersection point and normal.